[INFO] cloning repository https://github.com/christopher-kapic/ralph-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/christopher-kapic/ralph-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopher-kapic%2Fralph-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopher-kapic%2Fralph-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 16b6ebbce29a9f5249a2c9ef63e74464758c0881
[INFO] testing christopher-kapic/ralph-rs against master#f9988fefd3add01f414f52b414308e7872622fee for pr-155114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopher-kapic%2Fralph-rs" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/christopher-kapic/ralph-rs
[INFO] finished tweaking git repo https://github.com/christopher-kapic/ralph-rs
[INFO] tweaked toml for git repo https://github.com/christopher-kapic/ralph-rs written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/christopher-kapic/ralph-rs on toolchain f9988fefd3add01f414f52b414308e7872622fee
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/christopher-kapic/ralph-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rusqlite v0.34.0
[INFO] [stderr]   Downloaded clap_complete v4.6.0
[INFO] [stderr]   Downloaded tokio v1.51.0
[INFO] [stderr]   Downloaded libsqlite3-sys v0.32.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 04c2067f1ece4dd0a064ce103666a756c34fb3a4c24c69af038ca1069d16294f
[INFO] running `Command { std: "docker" "start" "-a" "04c2067f1ece4dd0a064ce103666a756c34fb3a4c24c69af038ca1069d16294f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "04c2067f1ece4dd0a064ce103666a756c34fb3a4c24c69af038ca1069d16294f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "04c2067f1ece4dd0a064ce103666a756c34fb3a4c24c69af038ca1069d16294f", kill_on_drop: false }`
[INFO] [stdout] 04c2067f1ece4dd0a064ce103666a756c34fb3a4c24c69af038ca1069d16294f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5b2e6d18147230f2758792db6cfa070f6bf451dbb9713c55df2984bc74b72f78
[INFO] running `Command { std: "docker" "start" "-a" "5b2e6d18147230f2758792db6cfa070f6bf451dbb9713c55df2984bc74b72f78", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling cc v1.2.59
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.32.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tokio v1.51.0
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling clap_complete v4.6.0
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling rusqlite v0.34.0
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling ralph-rs v0.1.14 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 54.01s
[INFO] running `Command { std: "docker" "inspect" "5b2e6d18147230f2758792db6cfa070f6bf451dbb9713c55df2984bc74b72f78", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b2e6d18147230f2758792db6cfa070f6bf451dbb9713c55df2984bc74b72f78", kill_on_drop: false }`
[INFO] [stdout] 5b2e6d18147230f2758792db6cfa070f6bf451dbb9713c55df2984bc74b72f78
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1bf987e6cedf1c12595bd0c2c05094a5c572d48305d4462b53cb3d00e03fc09c
[INFO] running `Command { std: "docker" "start" "-a" "1bf987e6cedf1c12595bd0c2c05094a5c572d48305d4462b53cb3d00e03fc09c", kill_on_drop: false }`
[INFO] [stderr]    Compiling ralph-rs v0.1.14 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 16.86s
[INFO] running `Command { std: "docker" "inspect" "1bf987e6cedf1c12595bd0c2c05094a5c572d48305d4462b53cb3d00e03fc09c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1bf987e6cedf1c12595bd0c2c05094a5c572d48305d4462b53cb3d00e03fc09c", kill_on_drop: false }`
[INFO] [stdout] 1bf987e6cedf1c12595bd0c2c05094a5c572d48305d4462b53cb3d00e03fc09c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1bdea10ea220d6172a3ae95de9f7457cc6e1876e9eb078225eac5d5f09b33def
[INFO] running `Command { std: "docker" "start" "-a" "1bdea10ea220d6172a3ae95de9f7457cc6e1876e9eb078225eac5d5f09b33def", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ralph-fe457967db629318)
[INFO] [stdout] 
[INFO] [stdout] running 755 tests
[INFO] [stdout] test cli::tests::test_harness_precedence_prefers_subcommand ... ok
[INFO] [stdout] test cli::tests::test_global_harness_flag ... ok
[INFO] [stdout] test cli::tests::test_hooks_add_lifecycle_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_with_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_defaults ... ok
[INFO] [stdout] test cli::tests::test_global_project_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_force ... ok
[INFO] [stdout] test cli::tests::test_parse_export ... ok
[INFO] [stdout] test cli::tests::test_parse_doctor ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_generate_rejects_plan_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_create_with_deps ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_set_rejects_plan_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_init ... ok
[INFO] [stdout] test cli::tests::test_parse_log ... ok
[INFO] [stdout] test cli::tests::test_parse_agents_list ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_set_with_positional_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_show ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_create ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_add_requires_depends_on ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_set ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_list ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_remove ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_timeout ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_add ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_generate_with_positional_plan ... ok
[INFO] [stdout] test cli::tests::test_hooks_add_lifecycle_value_enum ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_show_rejects_plan_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_list ... ok
[INFO] [stdout] test cli::tests::test_parse_resume ... ok
[INFO] [stdout] test cli::tests::test_parse_run_current_branch ... ok
[INFO] [stdout] test cli::tests::test_parse_run_all_plans ... ok
[INFO] [stdout] test cli::tests::test_parse_run ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_show_with_positional_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_run_single_alias ... ok
[INFO] [stdout] test cli::tests::test_parse_import ... ok
[INFO] [stdout] test cli::tests::test_parse_run_no_auto_stash ... ok
[INFO] [stdout] test cli::tests::test_parse_run_one ... ok
[INFO] [stdout] test cli::tests::test_parse_run_one_and_all_conflict ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_generate ... ok
[INFO] [stdout] test cli::tests::test_cli_debug_assert ... ok
[INFO] [stdout] test cli::tests::test_parse_skip ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_import_json_with_plan_slug ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_import_json ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_requires_title_without_import ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_change_policy_optional ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_change_policy_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_parse_status ... ok
[INFO] [stdout] test cli::tests::test_parse_step_edit_change_policy ... ok
[INFO] [stdout] test cli::tests::test_plan_delete ... ok
[INFO] [stdout] test commands::agents::tests::scaffold_has_no_leading_whitespace_drift ... ok
[INFO] [stdout] test cli::tests::test_step_set_hook_lifecycle_value_enum ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_set_timezone_persists_to_file ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_change_policy_default_none ... ok
[INFO] [stdout] test cli::tests::test_step_move ... ok
[INFO] [stdout] test commands::agents::tests::scaffold_matches_expected_snapshot ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_import_json_conflicts_with_description ... ok
[INFO] [stdout] test cli::tests::test_run_subcommand_captures_harness_flag ... ok
[INFO] [stdout] test commands::hooks::tests::all_collided_returns_err ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_set_timezone_rejects_invalid ... ok
[INFO] [stdout] test cli::tests::test_plan_list_status_invalid_rejected ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_show_prints_config_path_and_effective_values ... ok
[INFO] [stdout] test cli::tests::test_plan_list_status_value_enum ... ok
[INFO] [stdout] test cli::tests::test_plan_set_hook_lifecycle_value_enum ... ok
[INFO] [stdout] test commands::hooks::tests::force_with_overwrites_returns_ok ... ok
[INFO] [stdout] test cli::tests::test_step_remove ... ok
[INFO] [stdout] test cli::tests::test_step_set_hook_lifecycle_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_step_remove_yes_alias ... ok
[INFO] [stdout] test cli::tests::test_step_reset ... ok
[INFO] [stdout] test commands::hooks::tests::partial_success_returns_ok_and_reports_collisions ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_archived_and_status_includes_both ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_archived_flag_includes_all ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_default_hides_archived ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_status_archived_with_flag_is_implied ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_status_only_filters_to_exact_status ... ok
[INFO] [stdout] test commands::hooks::tests::clean_import_returns_ok ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_summary_json_shape ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_render_live_block_formats_current_section ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add ... ok
[INFO] [stdout] test cli::tests::test_plan_delete_yes_alias ... ok
[INFO] [stdout] test commands::step::tests::test_parse_bulk_steps_array ... ok
[INFO] [stdout] test commands::step::tests::test_parse_bulk_steps_invalid_rejected ... ok
[INFO] [stdout] test commands::step::tests::test_parse_bulk_steps_single_object ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_prepend_set_text_from_flag ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_no_live_run_is_ok ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_live_with_unbound_plan_id_still_attaches ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_prepend_show_default_flag ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_stale_log_does_not_overwrite_existing_terminal_reason ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_dead_target_cleans_up_row ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_plan_mismatch_errors ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_with_live_run_populates_json_live_field ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_live_child_pid_clears_after_harness_phase ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_stale_log_cleanup_preserves_observability_fields ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_plan_mismatch_omits_live_field ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_cmd_log_json_includes_termination_reason ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_prepend_clear_resets_to_none ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_without_live_run_omits_live_field ... ok
[INFO] [stdout] test commands::step::tests::test_render_tags_inline ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_force_kills_live_script ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_clear_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_empty_title_fails_atomically ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_with_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_from_file_inserts_array ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_from_file_single_object ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_replaces_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_rejects_duplicate_tag_in_same_invocation ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_rejects_empty_tag ... ok
[INFO] [stdout] test commands::tests::test_plan_approve ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_shows_attempts_budget_when_relevant ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_no_tag_flag_leaves_tags_unchanged ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_shows_budget_after_attempts_even_without_override ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_filter_requires_all_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_omits_budget_for_pending_default_steps ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_filter_by_tag ... ok
[INFO] [stdout] test commands::tests::test_plan_approve_rejects_non_planning ... ok
[INFO] [stdout] test commands::tests::test_plan_create_with_missing_dep_errors ... ok
[INFO] [stdout] test commands::tests::test_plan_create_with_deps ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_add_happy_path ... ok
[INFO] [stdout] test commands::tests::test_plan_create_and_list ... ok
[INFO] [stdout] test config::tests::test_agents_dir_returns_path ... ok
[INFO] [stdout] test config::tests::test_auto_stash_defaults_to_true_when_missing_in_json ... ok
[INFO] [stdout] test config::tests::test_config_deserialize_from_json ... ok
[INFO] [stdout] test config::tests::test_config_dir_returns_path ... ok
[INFO] [stdout] test config::tests::test_config_json_roundtrip ... ok
[INFO] [stdout] test config::tests::test_data_dir_returns_path ... ok
[INFO] [stdout] test config::tests::test_default_config_has_all_harnesses ... ok
[INFO] [stdout] test config::tests::test_default_timezone_is_utc ... ok
[INFO] [stdout] test config::tests::test_display_timezone_missing_in_json_defaults_to_utc ... ok
[INFO] [stdout] test config::tests::test_harness_color_json_roundtrip ... ok
[INFO] [stdout] test config::tests::test_harness_color_override_hex_parsed ... ok
[INFO] [stdout] test config::tests::test_harness_config_default_fields ... ok
[INFO] [stdout] test config::tests::test_harness_config_fields ... ok
[INFO] [stdout] test config::tests::test_invalid_timezone_fails_to_load ... ok
[INFO] [stdout] test config::tests::test_load_or_create_config_at_is_toctou_safe ... ok
[INFO] [stdout] test config::tests::test_load_or_create_config_creates_file ... ok
[INFO] [stdout] test config::tests::test_min_free_disk_mb_default_is_1024 ... ok
[INFO] [stdout] test config::tests::test_min_free_disk_mb_round_trips ... ok
[INFO] [stdout] test config::tests::test_save_round_trip ... ok
[INFO] [stdout] test config::tests::test_timeout_secs_deserializes_zero_and_null_as_none ... ok
[INFO] [stdout] test config::tests::test_valid_custom_timezone_passes ... ok
[INFO] [stdout] test config::tests::test_validate_accepts_default_config ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_empty_default_harness ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_missing_default_harness ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_add_rejects_cycle ... ok
[INFO] [stdout] test commands::tests::test_plan_delete_forced ... ok
[INFO] [stdout] test db::tests::test_db_path_under_data_dir ... ok
[INFO] [stdout] test commands::tests::test_step_add_and_list ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_remove ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_list_resolves_both_directions ... ok
[INFO] [stdout] test commands::tests::test_step_edit ... ok
[INFO] [stdout] test commands::tests::test_step_add_after ... ok
[INFO] [stdout] test commands::tests::test_step_add_after_with_criteria ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_add_rejects_self_reference ... ok
[INFO] [stdout] test commands::tests::test_step_move ... ok
[INFO] [stdout] test commands::tests::test_step_add_with_criteria_and_max_retries ... ok
[INFO] [stdout] test commands::tests::test_step_move_to_end ... ok
[INFO] [stdout] test commands::tests::test_step_out_of_range ... ok
[INFO] [stdout] test commands::tests::test_step_reset ... ok
[INFO] [stdout] test commands::tests::test_step_remove_forced ... ok
[INFO] [stdout] test db::tests::test_insert_plan_and_step ... ok
[INFO] [stdout] test db::tests::test_cascade_delete ... ok
[INFO] [stdout] test db::tests::test_migrate_v11_adds_run_lock_columns ... ok
[INFO] [stdout] test db::tests::test_indexes_exist ... ok
[INFO] [stdout] test db::tests::test_migration_idempotent ... ok
[INFO] [stdout] test db::tests::test_open_memory_creates_schema ... ok
[INFO] [stdout] test db::tests::test_db_file_is_mode_0600 ... ok
[INFO] [stdout] test db::tests::test_file_based_db ... ok
[INFO] [stdout] test db::tests::test_plan_dependencies_table_and_check_constraint ... ok
[INFO] [stdout] test db::tests::test_step_hooks_unique_index_enforced ... ok
[INFO] [stdout] test db::tests::test_plan_dependencies_cascade_delete ... ok
[INFO] [stdout] test executor::tests::test_failure_reason_mappings ... ok
[INFO] [stdout] test db::tests::test_migrate_v12_idempotent ... ok
[INFO] [stdout] test db::tests::test_plan_harness_column_exists ... ok
[INFO] [stdout] test db::tests::test_tables_exist ... ok
[INFO] [stdout] test db::tests::test_migrate_v11_idempotent ... ok
[INFO] [stdout] test db::tests::test_unique_constraints ... ok
[INFO] [stdout] test db::tests::test_migrate_v12_backfills_change_policy ... ok
[INFO] [stdout] test db::tests::test_migrate_v7_dedupes_existing_rows ... ok
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test db::tests::test_migrate_v11_backfills_execution_logs ... ok
[INFO] [stdout] test executor::tests::test_abort_before_pre_log_persists_attempts_and_log ... ok
[INFO] [stdout] test executor::tests::test_default_step_with_no_changes_still_fails ... ok
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test db::tests::test_migration_v14_adds_context_prepend_column ... ok
[INFO] [stdout] test db::tests::test_migration_v15_adds_source_branch_and_stash_sha_columns ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_embedded_in_output ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_full ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_no_json ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_partial ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_unknown_keys_only ... ok
[INFO] [stdout] test db::tests::test_migration_v13_adds_tags_column ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_full_with_verbose ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_short_prompt_no_truncation_marker ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_strips_trailing_whitespace ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_truncates_to_512_by_default ... ok
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1211 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_set_step_attempts ... ok
[INFO] [stdout] test executor::tests::test_step_outcome_variants ... ok
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_nonzero_exit_required_policy_retries_and_fails ... ok
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_nonzero_exit_optional_policy_does_not_false_green ... ok
[INFO] [stderr]   Prompt (512 of 1223 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_no_changes_reason ... ok
[INFO] [stderr]   Prompt (512 of 1575 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1569 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1576 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1211 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_optional_step_no_changes_passing_tests_completes ... ok
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_optional_step_no_changes_no_tests_completes ... ok
[INFO] [stdout] test executor::tests::test_optional_step_no_changes_failing_tests_fails ... ok
[INFO] [stdout] test executor::tests::test_execute_step_writes_phase_transitions ... ok
[INFO] [stderr]   Prompt (512 of 1351 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1584 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1351 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1205 chars):
[INFO] [stderr]     You are running as part of a `ralph` plan. Run `ralph status` to see the active plan, or `ralph plan show <slug>` for full details. Plan-specific conventions may be defined in AGENTS.md or CLAUDE.md.
[INFO] [stderr]     
[INFO] [stderr]     # Ralph context
[INFO] [stderr]     
[INFO] [stderr]     You are executing one step of a multi-step plan managed by `ralph`, a
[INFO] [stderr]     deterministic execution planner. Your step's title, description, and
[INFO] [stderr]     acceptance criteria are below.
[INFO] [stderr]     
[INFO] [stderr]     ## Introspecting the plan
[INFO] [stderr]     
[INFO] [stderr]     - `ralph status` — current plan state and progress
[INFO] [stderr]     - `ralph step list` — all steps with status
[INFO] [stderr]     -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_nonzero_exit_with_diff_and_passing_tests_still_fails ... ok
[INFO] [stdout] test frac_index::tests::test_char_index_invalid_returns_err ... ok
[INFO] [stdout] test executor::tests::test_pre_step_hook_failure_terminal_reason ... ok
[INFO] [stdout] test frac_index::tests::test_char_index_roundtrip ... ok
[INFO] [stdout] test frac_index::tests::test_frac_index_error_display_mentions_inputs ... ok
[INFO] [stdout] test frac_index::tests::test_initial_key ... ok
[INFO] [stdout] test frac_index::tests::test_key_after ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_adjacent_letters ... ok
[INFO] [stdout] test frac_index::tests::test_key_after_invalid_char_returns_err ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_different_lengths ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_invalid_char_returns_err ... ok
[INFO] [stdout] test executor::tests::test_nonzero_exit_retries_up_to_budget ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_repeated_midpoints ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_simple ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_wide_gap ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_zero_prefix_returns_error ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_zero_suffix_edge_pairs_return_error ... ok
[INFO] [stdout] test frac_index::tests::test_multiple_insertions_maintain_order ... ok
[INFO] [stdout] test export::tests::test_export_plan_to_file ... ok
[INFO] [stdout] test executor::tests::test_optional_step_with_changes_commits_normally ... ok
[INFO] [stdout] test executor::tests::test_large_harness_output_does_not_deadlock ... ok
[INFO] [stdout] test export::tests::test_build_exported_plan_excludes_internal_fields ... ok
[INFO] [stdout] test export::tests::test_export_includes_tags ... ok
[INFO] [stdout] test git::tests::test_commit_changes ... ok
[INFO] [stdout] test export::tests::test_export_preserves_step_order ... ok
[INFO] [stdout] test export::tests::test_export_resets_step_statuses ... ok
[INFO] [stdout] test export::tests::test_exported_json_is_valid ... ok
[INFO] [stdout] test export::tests::test_exported_json_excludes_ids_and_timestamps ... ok
[INFO] [stdout] test git::tests::test_get_commit_hash ... ok
[INFO] [stdout] test git::tests::test_get_all_changed_files ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_panics_when_a_ge_b - should panic ... ok
[INFO] [stdout] test export::tests::test_export_plan_not_found ... ok
[INFO] [stdout] test git::tests::test_get_diff_errors_when_not_a_repo ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_panics_when_equal - should panic ... ok
[INFO] [stdout] test git::tests::test_create_and_checkout_branch ... ok
[INFO] [stdout] test git::tests::test_parse_porcelain_status_rename_and_copy ... ok
[INFO] [stdout] test git::tests::test_git_error_handling ... ok
[INFO] [stdout] test git::tests::test_stage_except_propagates_reset_errors ... ok
[INFO] [stdout] test git::tests::test_create_branch_from_sha ... ok
[INFO] [stdout] test git::tests::test_get_diff ... ok
[INFO] [stdout] test git::tests::test_get_current_branch ... ok
[INFO] [stdout] test git::tests::test_has_uncommitted_changes_dirty ... ok
[INFO] [stdout] test git::tests::test_remove_untracked_except_tolerates_missing ... ok
[INFO] [stdout] test git::tests::test_find_stash_by_message_matches ... ok
[INFO] [stdout] test harness::tests::test_argv_mode_auto_spills_to_tempfile_above_threshold ... ok
[INFO] [stdout] test git::tests::test_has_uncommitted_changes_clean ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_agent_file_placeholder_replaced ... ok
[INFO] [stdout] test harness::tests::test_argv_mode_under_threshold_uses_argv ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_appends_json_output ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_claude_agent_file ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_no_agent_file_no_flag ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_appends_prompt_when_no_placeholder ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_no_json_when_unsupported ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_no_model_args_when_neither_set ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_opencode_uses_run_subcommand ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_override_beats_default_model ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_pi_uses_mode_json ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_prompt_containing_agent_file_token_no_agent ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_override_ignored_when_no_model_args ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_replaces_prompt_placeholder ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_replaces_prompt_within_arg ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_uses_default_model_when_no_override ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_claude_uses_flag_not_env ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_goose ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_no_agent ... ok
[INFO] [stdout] test harness::tests::test_prompt_input_mode_default_is_stdin ... ok
[INFO] [stdout] test harness::tests::test_remove_agent_file_args ... ok
[INFO] [stdout] test harness::tests::test_remove_agent_file_args_no_placeholder ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_chain_all_levels ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_falls_back_to_default ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_plan_overrides_default ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_returns_config ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_step_overrides_plan ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_unknown_errors ... ok
[INFO] [stdout] test harness::tests::test_stdin_mode_strips_prompt_placeholder_and_returns_bytes ... ok
[INFO] [stdout] test git::tests::test_remove_untracked_except_preserves_list ... ok
[INFO] [stdout] test harness::tests::test_tempfile_mode_writes_and_passes_path ... ok
[INFO] [stdout] test hook_library::tests::test_filter_by_project ... ok
[INFO] [stdout] test hook_library::tests::test_lifecycle_parse ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_prompt_containing_agent_file_token_with_agent ... ok
[INFO] [stdout] test hook_library::tests::test_load_all_returns_empty_when_dir_missing ... ok
[INFO] [stdout] test hook_library::tests::test_parse_accepts_closing_delimiter_with_trailing_whitespace ... ok
[INFO] [stdout] test hook_library::tests::test_parse_body_with_diff_markers_does_not_close_frontmatter_early ... ok
[INFO] [stdout] test hook_library::tests::test_parse_description_preserves_hash_in_double_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_parse_description_preserves_hash_in_single_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_parse_global_hook ... ok
[INFO] [stdout] test hook_library::tests::test_parse_path_scoped_hook ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_indented_closing_delimiter ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_missing_frontmatter ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_relative_paths ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_unknown_lifecycle ... ok
[INFO] [stdout] test hook_library::tests::test_parse_strips_unquoted_trailing_comment ... ok
[INFO] [stdout] test harness::tests::test_stdin_mode_writes_prompt_to_stdin_and_closes ... ok
[INFO] [stdout] test hook_library::tests::test_load_all_skips_corrupt_files_and_loads_valid ... ok
[INFO] [stdout] test hook_library::tests::test_parse_uses_fallback_name ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_description_with_embedded_backslash ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_description_with_hash ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_description_with_newline ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_global ... ok
[INFO] [stdout] test hook_library::tests::test_scope_matches_global ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_paths ... ok
[INFO] [stdout] test hook_library::tests::test_strip_comment_inside_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_scope_matches_prefix ... ok
[INFO] [stdout] test hook_library::tests::test_strip_comment_outside_quotes ... ok
[INFO] [stdout] test git::tests::test_stash_push_clean_tree_returns_none ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_newline ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_plain ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_tab_and_backslash ... ok
[INFO] [stdout] test git::tests::test_stage_except_unstages_excluded_files ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_with_colon ... ok
[INFO] [stdout] test git::tests::test_stage_except_tolerates_unstaged_file_in_exclude_list ... ok
[INFO] [stdout] test git::tests::test_rollback_changes ... ok
[INFO] [stdout] test git::tests::test_stash_pop_not_found_when_dropped ... ok
[INFO] [stdout] test hooks::tests::test_post_step_db_error_escalates_to_hard_failure ... ok
[INFO] [stdout] test hooks::tests::test_hook_timeout_zero_disables_timeout ... ok
[INFO] [stdout] test hooks::tests::test_post_step_hook_failure_is_warning ... ok
[INFO] [stdout] test hooks::tests::test_env_var_values_not_reexpanded_by_shell ... ok
[INFO] [stdout] test git::tests::test_stash_push_dirty_tree_returns_sha_and_message ... ok
[INFO] [stdout] test hooks::tests::test_warning_message_is_distinct_per_failure_kind ... ok
[INFO] [stdout] test import::tests::test_check_import_version_future_major_errors_when_strict ... ok
[INFO] [stdout] test import::tests::test_check_import_version_future_major_warns_not_strict ... ok
[INFO] [stdout] test import::tests::test_check_import_version_same_major_ok ... ok
[INFO] [stdout] test git::tests::test_stash_pop_clean ... ok
[INFO] [stdout] test hooks::tests::test_post_test_db_error_escalates_to_hard_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_lifecycle_with_no_hooks ... ok
[INFO] [stdout] test git::tests::test_merge_sha_clean ... ok
[INFO] [stdout] test hooks::tests::test_run_plan_wide_and_per_step_hooks ... ok
[INFO] [stdout] test import::tests::test_import_defaults_change_policy_to_required_when_missing ... ok
[INFO] [stdout] test import::tests::test_import_invalid_json ... ok
[INFO] [stdout] test hooks::tests::test_test_passed_env_var ... ok
[INFO] [stdout] test hooks::tests::test_warn_and_skip_missing_hook ... ok
[INFO] [stdout] test hooks::tests::test_status_env_var_passed_to_post_step ... ok
[INFO] [stdout] test import::tests::test_import_binds_to_project_directory ... ok
[INFO] [stdout] test import::tests::test_import_creates_fresh_uuids ... ok
[INFO] [stdout] test hooks::tests::test_pre_step_hook_failure_propagates ... ok
[INFO] [stdout] test import::tests::test_import_from_file ... ok
[INFO] [stdout] test import::tests::test_import_file_not_found ... ok
[INFO] [stdout] test import::tests::test_import_from_json_string ... ok
[INFO] [stdout] test import::tests::test_import_plan_status_ready_steps_pending ... ok
[INFO] [stdout] test import::tests::test_import_preserves_explicit_tags ... ok
[INFO] [stdout] test import::tests::test_import_missing_tags_defaults_to_empty ... ok
[INFO] [stdout] test import::tests::test_major_version_helper ... ok
[INFO] [stdout] test import::tests::test_import_rolls_back_on_failure ... ok
[INFO] [stdout] test import::tests::test_import_with_future_major_version_succeeds_non_strict ... ok
[INFO] [stdout] test import::tests::test_import_with_future_major_version_errors_strict ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_none_reader ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_truncates_to_tail ... ok
[INFO] [stdout] test import::tests::test_import_with_branch_override ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_under_cap_no_marker ... ok
[INFO] [stdout] test output::tests::test_colored_status_with_color ... ok
[INFO] [stdout] test io_util::tests::test_truncation_marker_format ... ok
[INFO] [stdout] test output::tests::test_colored_status_without_color ... ok
[INFO] [stdout] test output::tests::test_colored_termination_reason_color_off ... ok
[INFO] [stdout] test output::tests::test_colored_termination_reason_color_on ... ok
[INFO] [stdout] test output::tests::test_colored_test_status_color_off ... ok
[INFO] [stdout] test output::tests::test_colored_test_status_color_on ... ok
[INFO] [stdout] test output::tests::test_confirm_capital_y ... ok
[INFO] [stdout] test output::tests::test_confirm_empty ... ok
[INFO] [stdout] test output::tests::test_confirm_eof ... ok
[INFO] [stdout] test output::tests::test_confirm_mixed_case_yes ... ok
[INFO] [stdout] test output::tests::test_confirm_n ... ok
[INFO] [stdout] test output::tests::test_confirm_no_variants ... ok
[INFO] [stdout] test output::tests::test_confirm_prompt_displayed ... ok
[INFO] [stdout] test output::tests::test_confirm_y ... ok
[INFO] [stdout] test output::tests::test_confirm_yes ... ok
[INFO] [stdout] test output::tests::test_emit_ndjson_ok_writes_newline_terminated_json ... ok
[INFO] [stdout] test output::tests::test_emit_ndjson_serialization_error_propagates ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_color_off ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_color_on_known ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_override_takes_precedence ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_color_on_unknown_is_bold_no_color ... ok
[INFO] [stdout] test output::tests::test_format_now_in_tz_known_timezone ... ok
[INFO] [stdout] test output::tests::test_format_now_in_tz_smoke_live_call ... ok
[INFO] [stdout] test import::tests::test_import_with_harness_override ... ok
[INFO] [stdout] test output::tests::test_harness_color_known ... ok
[INFO] [stdout] test output::tests::test_harness_color_unknown_returns_none ... ok
[INFO] [stdout] test output::tests::test_live_run_display_json_includes_phase_elapsed_secs ... ok
[INFO] [stdout] test output::tests::test_live_run_display_malformed_phase_started_at_yields_none ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_json_snake_case ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_includes_termination_reason_and_test_status ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_truncated_respects_total_budget ... ok
[INFO] [stdout] test output::tests::test_parse_hex_color_invalid ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_omits_termination_and_test_status_when_none ... ok
[INFO] [stdout] test output::tests::test_parse_hex_color_valid ... ok
[INFO] [stdout] test output::tests::test_plan_status_icon_all_variants ... ok
[INFO] [stdout] test output::tests::test_plan_summary_json_snake_case ... ok
[INFO] [stdout] test output::tests::test_should_use_color_respects_no_color_env ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_both_fit ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_both_large_even_split ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_one_small_one_large ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_total_never_exceeds_budget ... ok
[INFO] [stdout] test output::tests::test_status_icon_all_variants ... ok
[INFO] [stdout] test output::tests::test_status_icon_with_color ... ok
[INFO] [stdout] test output::tests::test_status_icon_without_color ... ok
[INFO] [stdout] test output::tests::test_status_summary_includes_live_when_populated ... ok
[INFO] [stdout] test output::tests::test_status_summary_omits_live_when_none ... ok
[INFO] [stdout] test output::tests::test_step_summary_json_snake_case ... ok
[INFO] [stdout] test plan::tests::test_change_policy_default_is_required ... ok
[INFO] [stdout] test plan::tests::test_change_policy_display ... ok
[INFO] [stdout] test plan::tests::test_change_policy_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_change_policy_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_invalid_phase ... ok
[INFO] [stdout] test plan::tests::test_invalid_plan_status ... ok
[INFO] [stdout] test plan::tests::test_invalid_step_status ... ok
[INFO] [stdout] test plan::tests::test_invalid_termination_reason ... ok
[INFO] [stdout] test plan::tests::test_invalid_test_status ... ok
[INFO] [stdout] test plan::tests::test_phase_display ... ok
[INFO] [stdout] test plan::tests::test_phase_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_invalid_change_policy ... ok
[INFO] [stdout] test plan::tests::test_phase_serialize_snake_case ... ok
[INFO] [stdout] test import::tests::test_import_with_missing_dep_warns_but_succeeds ... ok
[INFO] [stdout] test import::tests::test_import_with_unparseable_version_proceeds ... ok
[INFO] [stdout] test plan::tests::test_plan_status_display ... ok
[INFO] [stdout] test plan::tests::test_plan_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_plan_status_serialize_lowercase ... ok
[INFO] [stdout] test import::tests::test_import_with_missing_optional_fields ... ok
[INFO] [stdout] test plan::tests::test_step_serde_defaults_change_policy_when_missing ... ok
[INFO] [stdout] test plan::tests::test_step_serde_preserves_optional_change_policy ... ok
[INFO] [stdout] test plan::tests::test_step_status_display ... ok
[INFO] [stdout] test plan::tests::test_step_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_step_status_serialize_lowercase ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_display ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_test_status_display ... ok
[INFO] [stdout] test plan::tests::test_test_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_test_status_serialize_snake_case ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_with_description ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_with_plan_slug_and_description ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_with_plan_slug_only ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_without_description ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_claude ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_codex_prepends_agent ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_copilot_uses_interactive_flag ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_goose_does_not_inline_agent ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_legacy_empty_template ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_pi_prepends_agent ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_prompt_containing_agent_file_token ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_unknown_harness_returns_err ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_claude_no_env ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_goose ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_goose_no_agent_file ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_unknown_harness_returns_err ... ok
[INFO] [stdout] test plan_harness::tests::test_harness_plan_agent_content ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_args_agent_file_substring ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_args_substring_replacement ... ok
[INFO] [stdout] test import::tests::test_roundtrip_export_import ... ok
[INFO] [stdout] test import::tests::test_roundtrip_with_dependencies ... ok
[INFO] [stdout] test import::tests::test_roundtrip_preserves_mixed_change_policies ... ok
[INFO] [stdout] test plan_harness::tests::test_render_plan_agent_lists_hooks ... ok
[INFO] [stdout] test plan::tests::test_plan_from_row ... ok
[INFO] [stdout] test plan::tests::test_plan_columns_matches_physical_table_order ... ok
[INFO] [stdout] test plan_harness::tests::test_write_agent_temp_file ... ok
[INFO] [stdout] test preflight::tests::test_check_git_state_not_git_repo ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_copilot_no_token ... ok
[INFO] [stdout] test plan::tests::test_plan_from_row_roundtrip_via_plan_columns ... ok
[INFO] [stdout] test plan::tests::test_execution_log_from_row ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_non_copilot ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_custom_probe_fails ... ok
[INFO] [stdout] test plan::tests::test_step_from_row ... ok
[INFO] [stdout] test plan_harness::tests::test_render_plan_agent_no_hooks_message ... ok
[INFO] [stdout] test preflight::tests::test_check_test_binaries_empty ... ok
[INFO] [stdout] test plan_harness::tests::test_planner_refuses_even_when_plan_slug_is_null ... ok
[INFO] [stdout] test import::tests::test_import_with_slug_override ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_boundaries ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_error ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_pass ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_warning ... ok
[INFO] [stdout] test preflight::tests::test_disk_space_available_gb ... ok
[INFO] [stdout] test preflight::tests::test_disk_space_root_returns_plausible_values ... ok
[INFO] [stdout] test plan_harness::tests::test_planner_proceeds_when_no_run_lock ... ok
[INFO] [stdout] test plan_harness::tests::test_planner_refuses_when_run_lock_present ... ok
[INFO] [stdout] test preflight::tests::test_extract_binary_simple ... ok
[INFO] [stdout] test preflight::tests::test_extract_binary_with_path ... ok
[INFO] [stdout] test preflight::tests::test_check_package_manager_no_pkg_json ... ok
[INFO] [stdout] test preflight::tests::test_check_package_manager_missing_node_modules ... ok
[INFO] [stdout] test preflight::tests::test_preflight_results_has_error ... ok
[INFO] [stdout] test preflight::tests::test_preflight_results_is_ok ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_custom_probe_succeeds ... ok
[INFO] [stdout] test preflight::tests::test_print_report_no_color_omits_ansi ... ok
[INFO] [stdout] test preflight::tests::test_check_test_binaries_found ... ok
[INFO] [stdout] test preflight::tests::test_is_binary_not_available ... ok
[INFO] [stdout] test preflight::tests::test_print_report_with_color_emits_ansi ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_all_sections ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_emits_pointer_for_non_native_harness ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_acceptance_criteria ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_agent_pointer_when_native ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_agent_pointer_when_no_agent ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_tests ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_with_retry_context ... ok
[INFO] [stdout] test preflight::tests::test_preflight_results_all_passed ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_env_var_present_skips_probe ... ok
[INFO] [stdout] test prompt::tests::test_default_prepend_is_used_when_plan_override_is_none ... ok
[INFO] [stdout] test prompt::tests::test_deterministic_tests_framing_no_imperative ... ok
[INFO] [stdout] test prompt::tests::test_current_step_marked_with_arrow ... ok
[INFO] [stdout] test prompt::tests::test_effective_context_prepend_returns_default_when_none ... ok
[INFO] [stdout] test preflight::tests::test_is_binary_available_sh ... ok
[INFO] [stdout] test prompt::tests::test_effective_context_prepend_returns_empty_for_empty_override ... ok
[INFO] [stdout] test preflight::tests::test_check_test_binaries_not_found ... ok
[INFO] [stdout] test prompt::tests::test_effective_context_prepend_returns_override ... ok
[INFO] [stdout] test preflight::tests::test_preflight_unknown_harness_fails_strict ... ok
[INFO] [stdout] test prompt::tests::test_empty_string_override_yields_no_prepend ... ok
[INFO] [stdout] test prompt::tests::test_format_retry_context_full ... ok
[INFO] [stdout] test prompt::tests::test_format_retry_context_minimal ... ok
[INFO] [stdout] test git::tests::test_stash_pop_conflict_leaves_stash_intact ... ok
[INFO] [stdout] test prompt::tests::test_plan_override_replaces_default ... ok
[INFO] [stdout] test prompt::tests::test_prompt_includes_step_titles_list_not_descriptions ... ok
[INFO] [stdout] test prompt::tests::test_prompt_section_order ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_short ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_long_keeps_head ... ok
[INFO] [stdout] test preflight::tests::test_check_package_manager_with_node_modules ... ok
[INFO] [stdout] test run_lock::tests::is_same_live_process_missing_stored_token_falls_back_to_liveness ... ok
[INFO] [stdout] test prompt::tests::test_wraps_layer_global_project_plan_order ... ok
[INFO] [stdout] test prompt::tests::test_wraps_skip_empty_and_none ... ok
[INFO] [stdout] test run_lock::tests::pid_is_alive_zero_or_negative ... ok
[INFO] [stdout] test git::tests::test_merge_sha_conflict ... ok
[INFO] [stdout] test run_lock::tests::process_start_token_self_is_stable_and_nonempty ... ok
[INFO] [stdout] test run_lock::tests::pid_is_alive_self ... ok
[INFO] [stdout] test run_lock::tests::double_signal_cleanup_clears_run_lock_row ... ok
[INFO] [stdout] test run_lock::tests::live_run_from_row_rejects_malformed_phase ... ok
[INFO] [stdout] test run_lock::tests::fresh_acquire_succeeds ... ok
[INFO] [stdout] test run_lock::tests::drop_calls_release_closure ... ok
[INFO] [stdout] test run_lock::tests::release_closure_reuses_shared_connection ... ok
[INFO] [stdout] test run_lock::tests::sql_escape_single_quotes_doubles_apostrophes ... ok
[INFO] [stdout] test run_lock::tests::live_run_from_row_hydrates_every_column ... ok
[INFO] [stdout] test run_lock::tests::force_reclaims_live_lock ... ok
[INFO] [stdout] test run_lock::tests::record_source_branch_and_stash_writes_both_columns ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_current_branch_skips_parent ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_ignores_out_of_scope_deps ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_no_deps_uses_run_start_sha ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_multiple_deps_picks_most_recent ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_single_dep_uses_dep_tip ... ok
[INFO] [stdout] test run_lock::tests::error_message_escapes_apostrophe_in_project_path ... ok
[INFO] [stdout] test run_lock::tests::record_source_branch_and_stash_errors_when_no_row ... ok
[INFO] [stdout] test runner::tests::test_dry_run_report ... ok
[INFO] [stdout] test runner::tests::test_find_current_step ... ok
[INFO] [stdout] test runner::tests::test_find_current_step_all_done ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_all_complete ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_failed ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_in_progress ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_pending ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_prefers_in_progress_over_failed ... ok
[INFO] [stdout] test runner::tests::test_is_actionable_statuses ... ok
[INFO] [stdout] test run_lock::tests::pid_reuse_with_mismatched_start_token_reclaims_lock ... ok
[INFO] [stdout] test runner::tests::test_dirty_tree_no_auto_stash_bails_cleanly ... ok
[INFO] [stdout] test run_lock::tests::run_blocks_concurrent_skip_on_same_project ... ok
[INFO] [stdout] test run_lock::tests::release_row_with_conn_is_pid_scoped ... ok
[INFO] [stdout] test runner::tests::test_progress_header_uses_plan_relative_numbers ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_from_greater_than_to_errors ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_from_to_bounds ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_no_bounds_covers_all ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_out_of_range_errors ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_tolerates_midrun_insert ... ok
[INFO] [stdout] test run_lock::tests::stale_lock_is_reclaimed ... ok
[INFO] [stdout] test run_lock::tests::second_acquire_with_live_pid_fails ... ok
[INFO] [stdout] test preflight::tests::test_doctor_checks_returns_results ... ok
[INFO] [stdout] test runner::tests::test_run_options_default ... ok
[INFO] [stdout] test run_lock::tests::concurrent_acquirers_leave_exactly_one_lock_row ... ok
[INFO] [stdout] test runner::tests::test_select_steps_default_returns_all_even_completed ... ok
[INFO] [stdout] test runner::tests::test_select_steps_default_returns_all_remaining ... ok
[INFO] [stdout] test runner::tests::test_select_steps_from_only ... ok
[INFO] [stdout] test runner::tests::test_select_steps_from_to ... ok
[INFO] [stdout] test runner::tests::test_select_steps_out_of_range ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_flag_none_pending ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_flag_returns_only_next ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_flag_skips_completed ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_picks_failed_as_next ... ok
[INFO] [stdout] test runner::tests::test_select_steps_to_only ... ok
[INFO] [stdout] test runner::tests::test_plan_status_failed_transition ... ok
[INFO] [stdout] test runner::tests::test_mid_run_step_insertion_picked_up ... ok
[INFO] [stdout] test runner::tests::test_clean_tree_no_stash_needed ... ok
[INFO] [stdout] test runner::tests::test_plan_status_transitions_in_storage ... ok
[INFO] [stdout] test runner::tests::test_reset_clears_skipped_reason ... ok
[INFO] [stdout] test hooks::tests::test_hook_timeout_aborts_long_running_hook ... ok
[INFO] [stdout] test runner::tests::test_run_all_plans_no_runnable_plans ... ok
[INFO] [stdout] test runner::tests::test_crash_leaves_stash_on_stack ... ok
[INFO] [stdout] test runner::tests::test_resume_resets_aborted_step_to_pending ... ok
[INFO] [stdout] test runner::tests::test_setup_branch_with_parent_sha ... ok
[INFO] [stdout] test runner::tests::test_run_all_plans_cycle_detection ... ok
[INFO] [stdout] test runner::tests::test_setup_branch_does_not_block_runtime ... ok
[INFO] [stdout] test runner::tests::test_dirty_tree_default_auto_stash_push_pop_round_trip ... ok
[INFO] [stdout] test runner::tests::test_run_plan_does_not_count_preexisting_complete_as_succeeded ... ok
[INFO] [stdout] test runner::tests::test_step_number_in_plan ... ok
[INFO] [stdout] test runner::tests::test_skip_step_by_number ... ok
[INFO] [stdout] test runner::tests::test_skip_step_current ... ok
[INFO] [stdout] test runner::tests::test_skip_step_allows_failed ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_diamond_no_duplicates ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_direct_dependent ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_independent_plans_not_blocked ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_no_edges ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_transitive_chain ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_aborted_allows_resume ... ok
[INFO] [stdout] test runner::tests::test_skip_step_persists_reason ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_complete_rejected ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_in_progress ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_planning_rejected ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_failed_allows_retry ... ok
[INFO] [stdout] test signal::tests::test_abort_tx_propagates ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_ready ... ok
[INFO] [stdout] test signal::tests::test_clear_exit_cleanup_prevents_run ... ok
[INFO] [stdout] test signal::tests::test_first_signal_flag ... ok
[INFO] [stdout] test runner::tests::test_skip_step_rejects_complete ... ok
[INFO] [stdout] test signal::tests::test_install_and_spawn_with_handle ... ok
[INFO] [stdout] test signal::tests::test_exit_cleanup_runs_once_and_is_cleared ... ok
[INFO] [stdout] test signal::tests::test_multiple_receivers ... ok
[INFO] [stdout] test signal::tests::test_shutdown_controller_initial_state ... ok
[INFO] [stdout] test signal::tests::test_shutdown_controller_instances_are_independent ... ok
[INFO] [stdout] test signal::tests::test_shutdown_handle_triggers_abort ... ok
[INFO] [stdout] test signal::tests::test_install_and_spawn ... ok
[INFO] [stdout] test signal::tests::test_install_returns_controller_and_rx ... ok
[INFO] [stdout] test signal::tests::test_spawn_signal_listener_returns_handle_and_rx ... ok
[INFO] [stdout] test runner::tests::test_skip_step_no_reason_stores_null ... ok
[INFO] [stdout] test executor::tests::test_large_harness_output_truncates_to_cap ... ok
[INFO] [stdout] test runner::tests::test_skip_step_out_of_range ... ok
[INFO] [stdout] test runner::tests::test_stale_in_progress_swept_on_run_start ... ok
[INFO] [stdout] test runner::tests::test_stale_sweep_noop_without_in_progress ... ok
[INFO] [stdout] test runner::tests::test_step_status_transitions ... ok
[INFO] [stdout] test runner::tests::test_stash_pop_conflict_during_teardown_preserves_stash ... ok
[INFO] [stdout] test signal::tests::test_sigterm_triggers_graceful_shutdown ... ok
[INFO] [stdout] test runner::tests::test_setup_branch_failure_still_restores_stash ... ok
[INFO] [stdout] test runner::tests::test_step_status_failed_and_skipped ... ok
[INFO] [stdout] test storage::tests::test_add_plan_dependency_rejects_cycle ... ok
[INFO] [stdout] test runner::tests::test_sweep_and_log_wrapper_flips_and_returns_rows ... ok
[INFO] [stdout] test storage::tests::test_add_plan_dependency_rejects_self_reference ... ok
[INFO] [stdout] test storage::tests::test_attach_hook_to_plan_rejects_duplicate ... ok
[INFO] [stdout] test storage::tests::test_add_plan_dependency_happy_path ... ok
[INFO] [stdout] test storage::tests::test_create_and_get_execution_log ... ok
[INFO] [stdout] test storage::tests::test_create_step_generates_sort_keys ... ok
[INFO] [stdout] test storage::tests::test_bind_live_run_to_plan_sets_plan_and_clears_stale_step_state ... ok
[INFO] [stdout] test storage::tests::test_attach_hook_allows_distinct_combinations ... ok
[INFO] [stdout] test storage::tests::test_create_plan_and_get_by_slug ... ok
[INFO] [stdout] test storage::tests::test_delete_run_lock_row_unscoped_matches_pid_and_token ... ok
[INFO] [stdout] test storage::tests::test_create_step_at_persists_change_policy ... ok
[INFO] [stdout] test storage::tests::test_create_step_stores_tags ... ok
[INFO] [stdout] test storage::tests::test_attach_hook_to_step_rejects_duplicate ... ok
[INFO] [stdout] test storage::tests::test_create_step_persists_change_policy_optional ... ok
[INFO] [stdout] test executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant ... FAILED
[INFO] [stdout] test storage::tests::test_delete_plan_not_found ... ok
[INFO] [stdout] test storage::tests::test_delete_plan_cascades ... ok
[INFO] [stdout] test storage::tests::test_delete_run_lock_row_unscoped_null_token_both_sides ... ok
[INFO] [stdout] test storage::tests::test_finalize_execution_log_as_interrupted_missing_row_is_benign ... ok
[INFO] [stdout] test storage::tests::test_delete_run_lock_row_unscoped_mismatched_token_leaves_row ... ok
[INFO] [stdout] test storage::tests::test_finalize_execution_log_as_interrupted_preserves_existing_terminal ... ok
[INFO] [stdout] test storage::tests::test_create_step_persists_change_policy_required_by_default ... ok
[INFO] [stdout] test storage::tests::test_finalize_execution_log_as_interrupted_sets_fields ... ok
[INFO] [stdout] test storage::tests::test_find_active_plan_filters_by_status ... ok
[INFO] [stdout] test storage::tests::test_delete_step ... ok
[INFO] [stdout] test storage::tests::test_get_live_run_missing_returns_none ... ok
[INFO] [stdout] test executor::tests::test_abort_kills_harness_process_group ... FAILED
[INFO] [stdout] test storage::tests::test_get_next_pending_step ... ok
[INFO] [stdout] test storage::tests::test_get_latest_log_for_step ... ok
[INFO] [stdout] test storage::tests::test_json_roundtrip_acceptance_criteria ... ok
[INFO] [stdout] test storage::tests::test_get_plan_by_slug_not_found ... ok
[INFO] [stdout] test storage::tests::test_list_plans_filters_by_project ... ok
[INFO] [stdout] test storage::tests::test_json_roundtrip_deterministic_tests ... ok
[INFO] [stdout] test storage::tests::test_list_plan_dependencies_and_dependents ... ok
[INFO] [stdout] test storage::tests::test_list_steps_ordered_by_sort_key ... ok
[INFO] [stdout] test storage::tests::test_remove_plan_dependency ... ok
[INFO] [stdout] test storage::tests::test_plan_context_prepend_round_trip ... ok
[INFO] [stdout] test storage::tests::test_reset_step_clears_execution_logs ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_diamond ... ok
[INFO] [stdout] test storage::tests::test_step_acceptance_criteria_roundtrip ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_ignores_edges_outside_input ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_cycle_detection_error ... ok
[INFO] [stdout] test storage::tests::test_tags_default_to_empty_for_legacy_rows ... ok
[INFO] [stdout] test storage::tests::test_json_roundtrip_empty_arrays ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log ... ok
[INFO] [stdout] test runner::tests::test_stash_pop_on_failure_still_fires ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_independent_plans ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_persists_termination_and_test_status ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_linear_chain ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_coalesces_termination_and_test_status ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_preserves_session_id_when_none ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_rolled_back_and_committed_panics - should panic ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_errors_when_no_row ... ok
[INFO] [stdout] test test_runner::tests::test_abort_before_start ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_clear_child_sets_columns_null ... ok
[INFO] [stdout] test test_runner::tests::test_all_pass ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_keep_preserves_child ... ok
[INFO] [stdout] test test_runner::tests::test_captures_stderr ... ok
[INFO] [stdout] test test_runner::tests::test_empty_tests ... ok
[INFO] [stdout] test test_runner::tests::test_exit_code_nonzero ... ok
[INFO] [stdout] test test_runner::tests::test_first_failure_short_circuits ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_coalesces_optional_fields ... ok
[INFO] [stdout] test test_runner::tests::test_respects_cwd ... ok
[INFO] [stdout] test test_runner::tests::test_tail_lines_preserves_trailing_newline ... ok
[INFO] [stdout] test test_runner::tests::test_tail_lines_truncation ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_overwrites_current_command ... ok
[INFO] [stdout] test tui::input::tests::test_a_enters_add_mode ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_atomic_single_update ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_ctrl_c_quits ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_backspace ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_does_not_navigate ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_enter_confirms ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_enter_empty_is_noop ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_esc_cancels ... ok
[INFO] [stdout] test tui::input::tests::test_add_mode_typing ... ok
[INFO] [stdout] test tui::input::tests::test_ctrl_c_quits ... ok
[INFO] [stdout] test tui::input::tests::test_down_arrow_navigates_down ... ok
[INFO] [stdout] test tui::input::tests::test_j_navigates_down ... ok
[INFO] [stdout] test tui::input::tests::test_k_navigates_up ... ok
[INFO] [stdout] test storage::tests::test_update_plan_status ... ok
[INFO] [stdout] test tui::input::tests::test_q_quits ... ok
[INFO] [stdout] test tui::input::tests::test_s_skips_in_progress_step ... ok
[INFO] [stdout] test tui::input::tests::test_unknown_key_is_noop ... ok
[INFO] [stdout] test tui::input::tests::test_up_arrow_navigates_up ... ok
[INFO] [stdout] test tui::tests::test_app_creation ... ok
[INFO] [stdout] test tui::tests::test_confirm_add_step ... ok
[INFO] [stdout] test tui::tests::test_cancel_add_step ... ok
[INFO] [stdout] test tui::tests::test_confirm_add_step_empty_title ... ok
[INFO] [stdout] test tui::tests::test_current_in_progress_step ... ok
[INFO] [stdout] test tui::tests::test_elapsed_secs_no_timer ... ok
[INFO] [stdout] test tui::tests::test_enter_add_mode ... ok
[INFO] [stdout] test tui::tests::test_input_mode_variants ... ok
[INFO] [stdout] test tui::tests::test_insert_step_at_position ... ok
[INFO] [stdout] test tui::tests::test_execution_timer ... ok
[INFO] [stdout] test tui::tests::test_navigate_down ... ok
[INFO] [stdout] test tui::tests::test_navigate_down_wraps ... ok
[INFO] [stdout] test tui::tests::test_navigate_empty_steps ... ok
[INFO] [stdout] test tui::tests::test_navigate_up ... ok
[INFO] [stdout] test tui::tests::test_navigate_up_wraps ... ok
[INFO] [stdout] test tui::tests::test_no_in_progress_step ... ok
[INFO] [stdout] test tui::tests::test_quit ... ok
[INFO] [stdout] test tui::tests::test_status_indicator ... ok
[INFO] [stdout] test tui::tests::test_skip_complete_step_rejected ... ok
[INFO] [stdout] test tui::tests::test_skip_current_step ... ok
[INFO] [stdout] test tui::tests::test_update_step_status ... ok
[INFO] [stdout] test tui::tests::test_update_step_status_unknown_id ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_sets_row ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_missing_step_rolls_back ... ok
[INFO] [stdout] test tui::ui::tests::test_draw_does_not_panic_with_steps ... ok
[INFO] [stdout] test tui::ui::tests::test_draw_does_not_panic_empty_steps ... ok
[INFO] [stdout] test validate::tests::rejects_absolute_path ... ok
[INFO] [stdout] test validate::tests::rejects_backslash_path ... ok
[INFO] [stdout] test tui::ui::tests::test_draw_add_mode ... ok
[INFO] [stdout] test validate::tests::rejects_empty ... ok
[INFO] [stdout] test test_runner::tests::test_abort_signal_interrupts_running_test ... ok
[INFO] [stdout] test validate::tests::rejects_path_traversal ... ok
[INFO] [stdout] test tui::ui::tests::test_list_state_persists_across_frames ... ok
[INFO] [stdout] test validate::tests::valid_names ... ok
[INFO] [stdout] test validate::tests::rejects_nul_byte ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_clears_nullable_fields ... ok
[INFO] [stdout] test tui::ui::tests::test_detail_attempt_counter_uses_config_default ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_noop_when_all_none ... ok
[INFO] [stdout] test storage::tests::test_would_create_cycle_direct ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_replaces_tags ... ok
[INFO] [stdout] test storage::tests::test_update_step_status ... ok
[INFO] [stdout] test storage::tests::test_would_create_cycle_transitive ... ok
[INFO] [stdout] test tui::ui::tests::test_status_colors_are_distinct ... ok
[INFO] [stdout] test validate::tests::rejects_leading_dot ... ok
[INFO] [stdout] test test_runner::tests::test_captures_output ... ok
[INFO] [stdout] test tests::resolve_plan_rejects_empty_slug ... ok
[INFO] [stdout] test storage::tests::test_would_create_cycle_no_cycle ... ok
[INFO] [stdout] test test_runner::tests::test_large_output_does_not_deadlock ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant stdout ----
[INFO] [stdout]   -> trap attempt 1/1 [started 2026-05-04 13:17:04 UTC]
[INFO] [stdout] 
[INFO] [stdout] thread 'executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant' (230) panicked at src/executor.rs:2971:9:
[INFO] [stdout] SIGTERM-trapping grandchild (pid 350) survived abort — belt-and-braces SIGKILL did not fan out
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5615bee0798a - std[1209cfb42f6d497f]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5615bee0798a - std[1209cfb42f6d497f]::backtrace_rs::backtrace::trace_unsynchronized::<std[1209cfb42f6d497f]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5615bee0798a - std[1209cfb42f6d497f]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5615bee0798a - <<std[1209cfb42f6d497f]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[4a92201981c6b77a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5615bee200ca - <core[4a92201981c6b77a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5615bee200ca - core[4a92201981c6b77a]::fmt::write
[INFO] [stdout]    6:     0x5615bee0e462 - std[1209cfb42f6d497f]::io::default_write_fmt::<alloc[420bb310a727dfd7]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x5615bee0e462 - <alloc[420bb310a727dfd7]::vec::Vec<u8> as std[1209cfb42f6d497f]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x5615bede2a7f - <std[1209cfb42f6d497f]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5615bede2a7f - std[1209cfb42f6d497f]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5615bedfe4b9 - std[1209cfb42f6d497f]::panicking::default_hook
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5615be9eeddc - <alloc[420bb310a727dfd7]::boxed::Box<dyn for<'a, 'b> core[4a92201981c6b77a]::ops::function::Fn<(&'a std[1209cfb42f6d497f]::panic::PanicHookInfo<'b>,), Output = ()> + core[4a92201981c6b77a]::marker::Sync + core[4a92201981c6b77a]::marker::Send> as core[4a92201981c6b77a]::ops::function::Fn<(&std[1209cfb42f6d497f]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x5615be9eeddc - test[59e67a9bc0e119f1]::test_main_inner::<test[59e67a9bc0e119f1]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5615bedfe732 - <alloc[420bb310a727dfd7]::boxed::Box<dyn for<'a, 'b> core[4a92201981c6b77a]::ops::function::Fn<(&'a std[1209cfb42f6d497f]::panic::PanicHookInfo<'b>,), Output = ()> + core[4a92201981c6b77a]::marker::Sync + core[4a92201981c6b77a]::marker::Send> as core[4a92201981c6b77a]::ops::function::Fn<(&std[1209cfb42f6d497f]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x5615bedfe732 - std[1209cfb42f6d497f]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5615bede2b38 - std[1209cfb42f6d497f]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5615bedd71e9 - std[1209cfb42f6d497f]::sys::backtrace::__rust_end_short_backtrace::<std[1209cfb42f6d497f]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5615bede3d9d - __rustc[4effac393e9f3da6]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5615bee2088c - core[4a92201981c6b77a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5615be5ab92c - ralph[80cb001c55986363]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:2971:9
[INFO] [stdout]   20:     0x5615be7a0d82 - <core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>> as core[4a92201981c6b77a]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x5615be7a0ebd - <core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>> as core[4a92201981c6b77a]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x5615be92a8ad - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   23:     0x5615be92a34b - tokio[604660e6d4539de6]::task::coop::with_budget::<core[4a92201981c6b77a]::task::poll::Poll<()>, <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x5615be92a34b - tokio[604660e6d4539de6]::task::coop::budget::<core[4a92201981c6b77a]::task::poll::Poll<()>, <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x5615be92a34b - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   26:     0x5615be8fced0 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Context>::enter::<core[4a92201981c6b77a]::task::poll::Poll<()>, <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   27:     0x5615be924b5d - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   28:     0x5615be922624 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   29:     0x5615be57895b - <tokio[604660e6d4539de6]::runtime::context::scoped::Scoped<tokio[604660e6d4539de6]::runtime::scheduler::Context>>::set::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}, (alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x5615be87d429 - tokio[604660e6d4539de6]::runtime::context::set_scheduler::<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context.rs:181:38
[INFO] [stdout]   31:     0x5615be6b35d2 - <std[1209cfb42f6d497f]::thread::local::LocalKey<tokio[604660e6d4539de6]::runtime::context::Context>>::try_with::<tokio[604660e6d4539de6]::runtime::context::set_scheduler<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   32:     0x5615be6b279e - <std[1209cfb42f6d497f]::thread::local::LocalKey<tokio[604660e6d4539de6]::runtime::context::Context>>::with::<tokio[604660e6d4539de6]::runtime::context::set_scheduler<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   33:     0x5615be86d9ed - tokio[604660e6d4539de6]::runtime::context::set_scheduler::<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context.rs:181:17
[INFO] [stdout]   34:     0x5615be915910 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   35:     0x5615be916666 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   36:     0x5615be920a00 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   37:     0x5615be896993 - tokio[604660e6d4539de6]::runtime::context::runtime::enter_runtime::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x5615be8f8431 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   39:     0x5615be7a2754 - <tokio[604660e6d4539de6]::runtime::runtime::Runtime>::block_on_inner::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/runtime.rs:371:52
[INFO] [stdout]   40:     0x5615be7a2cff - <tokio[604660e6d4539de6]::runtime::runtime::Runtime>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/runtime.rs:345:18
[INFO] [stdout]   41:     0x5615be5cdcff - ralph[80cb001c55986363]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:2975:10
[INFO] [stdout]   42:     0x5615be58e387 - ralph[80cb001c55986363]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:2824:73
[INFO] [stdout]   43:     0x5615be81b736 - <ralph[80cb001c55986363]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant::{closure#0} as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x5615be9e20bb - <fn() -> core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x5615be9e20bb - test[59e67a9bc0e119f1]::__rust_begin_short_backtrace::<core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>, fn() -> core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:724:18
[INFO] [stdout]   46:     0x5615be9ef8ab - test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:747:74
[INFO] [stdout]   47:     0x5615be9ef8ab - <core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   48:     0x5615be9ef8ab - std[1209cfb42f6d497f]::panicking::catch_unwind::do_call::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}>, core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:581:40
[INFO] [stdout]   49:     0x5615be9ef8ab - std[1209cfb42f6d497f]::panicking::catch_unwind::<core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>, core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x5615be9ef8ab - std[1209cfb42f6d497f]::panic::catch_unwind::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}>, core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x5615be9ef8ab - test[59e67a9bc0e119f1]::run_test_in_process
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:747:27
[INFO] [stdout]   52:     0x5615be9ef8ab - test[59e67a9bc0e119f1]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:668:43
[INFO] [stdout]   53:     0x5615be9e8fc4 - test[59e67a9bc0e119f1]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:698:41
[INFO] [stdout]   54:     0x5615be9e8fc4 - std[1209cfb42f6d497f]::sys::backtrace::__rust_begin_short_backtrace::<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x5615be9f24b2 - std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked::<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   56:     0x5615be9f24b2 - <core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   57:     0x5615be9f24b2 - std[1209cfb42f6d497f]::panicking::catch_unwind::do_call::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:581:40
[INFO] [stdout]   58:     0x5615be9f24b2 - std[1209cfb42f6d497f]::panicking::catch_unwind::<(), core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x5615be9f24b2 - std[1209cfb42f6d497f]::panic::catch_unwind::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x5615be9f24b2 - std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked::<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   61:     0x5615be9f24b2 - <std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1} as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x5615bee06a6f - <alloc[420bb310a727dfd7]::boxed::Box<dyn core[4a92201981c6b77a]::ops::function::FnOnce<(), Output = ()> + core[4a92201981c6b77a]::marker::Send> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   63:     0x5615bee06a6f - <std[1209cfb42f6d497f]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   64:     0x75ef7ca7baa4 - <unknown>
[INFO] [stdout]   65:     0x75ef7cb08a64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- executor::tests::test_abort_kills_harness_process_group stdout ----
[INFO] [stdout]   -> pgroup attempt 1/1 [started 2026-05-04 13:17:04 UTC]
[INFO] [stdout] 
[INFO] [stdout] thread 'executor::tests::test_abort_kills_harness_process_group' (211) panicked at src/executor.rs:2807:9:
[INFO] [stdout] grandchild sleep (pid 319) survived the abort — process-group kill did not fan out
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5615bee0798a - std[1209cfb42f6d497f]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5615bee0798a - std[1209cfb42f6d497f]::backtrace_rs::backtrace::trace_unsynchronized::<std[1209cfb42f6d497f]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5615bee0798a - std[1209cfb42f6d497f]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5615bee0798a - <<std[1209cfb42f6d497f]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[4a92201981c6b77a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5615bee200ca - <core[4a92201981c6b77a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5615bee200ca - core[4a92201981c6b77a]::fmt::write
[INFO] [stdout]    6:     0x5615bee0e462 - std[1209cfb42f6d497f]::io::default_write_fmt::<alloc[420bb310a727dfd7]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x5615bee0e462 - <alloc[420bb310a727dfd7]::vec::Vec<u8> as std[1209cfb42f6d497f]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x5615bede2a7f - <std[1209cfb42f6d497f]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5615bede2a7f - std[1209cfb42f6d497f]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5615bedfe4b9 - std[1209cfb42f6d497f]::panicking::default_hook
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5615be9eeddc - <alloc[420bb310a727dfd7]::boxed::Box<dyn for<'a, 'b> core[4a92201981c6b77a]::ops::function::Fn<(&'a std[1209cfb42f6d497f]::panic::PanicHookInfo<'b>,), Output = ()> + core[4a92201981c6b77a]::marker::Sync + core[4a92201981c6b77a]::marker::Send> as core[4a92201981c6b77a]::ops::function::Fn<(&std[1209cfb42f6d497f]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x5615be9eeddc - test[59e67a9bc0e119f1]::test_main_inner::<test[59e67a9bc0e119f1]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5615bedfe732 - <alloc[420bb310a727dfd7]::boxed::Box<dyn for<'a, 'b> core[4a92201981c6b77a]::ops::function::Fn<(&'a std[1209cfb42f6d497f]::panic::PanicHookInfo<'b>,), Output = ()> + core[4a92201981c6b77a]::marker::Sync + core[4a92201981c6b77a]::marker::Send> as core[4a92201981c6b77a]::ops::function::Fn<(&std[1209cfb42f6d497f]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x5615bedfe732 - std[1209cfb42f6d497f]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5615bede2b38 - std[1209cfb42f6d497f]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5615bedd71e9 - std[1209cfb42f6d497f]::sys::backtrace::__rust_end_short_backtrace::<std[1209cfb42f6d497f]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5615bede3d9d - __rustc[4effac393e9f3da6]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5615bee2088c - core[4a92201981c6b77a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5615be592882 - ralph[80cb001c55986363]::executor::tests::test_abort_kills_harness_process_group::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:2807:9
[INFO] [stdout]   20:     0x5615be7a0d82 - <core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>> as core[4a92201981c6b77a]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x5615be7a0ebd - <core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>> as core[4a92201981c6b77a]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x5615be92a8ad - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   23:     0x5615be92a34b - tokio[604660e6d4539de6]::task::coop::with_budget::<core[4a92201981c6b77a]::task::poll::Poll<()>, <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x5615be92a34b - tokio[604660e6d4539de6]::task::coop::budget::<core[4a92201981c6b77a]::task::poll::Poll<()>, <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x5615be92a34b - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   26:     0x5615be8fced0 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Context>::enter::<core[4a92201981c6b77a]::task::poll::Poll<()>, <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   27:     0x5615be924b5d - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   28:     0x5615be922624 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   29:     0x5615be57895b - <tokio[604660e6d4539de6]::runtime::context::scoped::Scoped<tokio[604660e6d4539de6]::runtime::scheduler::Context>>::set::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}, (alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x5615be87d429 - tokio[604660e6d4539de6]::runtime::context::set_scheduler::<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context.rs:181:38
[INFO] [stdout]   31:     0x5615be6b35d2 - <std[1209cfb42f6d497f]::thread::local::LocalKey<tokio[604660e6d4539de6]::runtime::context::Context>>::try_with::<tokio[604660e6d4539de6]::runtime::context::set_scheduler<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   32:     0x5615be6b279e - <std[1209cfb42f6d497f]::thread::local::LocalKey<tokio[604660e6d4539de6]::runtime::context::Context>>::with::<tokio[604660e6d4539de6]::runtime::context::set_scheduler<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   33:     0x5615be86d9ed - tokio[604660e6d4539de6]::runtime::context::set_scheduler::<(alloc[420bb310a727dfd7]::boxed::Box<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::Core>, core[4a92201981c6b77a]::option::Option<()>), <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context.rs:181:17
[INFO] [stdout]   34:     0x5615be915910 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>::{closure#0}, core[4a92201981c6b77a]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   35:     0x5615be916666 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   36:     0x5615be920a00 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stderr] error: test failed, to rerun pass `--bin ralph`
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   37:     0x5615be896993 - tokio[604660e6d4539de6]::runtime::context::runtime::enter_runtime::<<tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x5615be8f8431 - <tokio[604660e6d4539de6]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   39:     0x5615be7a2754 - <tokio[604660e6d4539de6]::runtime::runtime::Runtime>::block_on_inner::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/runtime.rs:371:52
[INFO] [stdout]   40:     0x5615be7a2cff - <tokio[604660e6d4539de6]::runtime::runtime::Runtime>::block_on::<core[4a92201981c6b77a]::pin::Pin<&mut dyn core[4a92201981c6b77a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.0/src/runtime/runtime.rs:345:18
[INFO] [stdout]   41:     0x5615be5cb33f - ralph[80cb001c55986363]::executor::tests::test_abort_kills_harness_process_group
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:2811:10
[INFO] [stdout]   42:     0x5615be58dff7 - ralph[80cb001c55986363]::executor::tests::test_abort_kills_harness_process_group::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:2665:54
[INFO] [stdout]   43:     0x5615be81b276 - <ralph[80cb001c55986363]::executor::tests::test_abort_kills_harness_process_group::{closure#0} as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x5615be9e20bb - <fn() -> core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x5615be9e20bb - test[59e67a9bc0e119f1]::__rust_begin_short_backtrace::<core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>, fn() -> core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:724:18
[INFO] [stdout]   46:     0x5615be9ef8ab - test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:747:74
[INFO] [stdout]   47:     0x5615be9ef8ab - <core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   48:     0x5615be9ef8ab - std[1209cfb42f6d497f]::panicking::catch_unwind::do_call::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}>, core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:581:40
[INFO] [stdout]   49:     0x5615be9ef8ab - std[1209cfb42f6d497f]::panicking::catch_unwind::<core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>, core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x5615be9ef8ab - std[1209cfb42f6d497f]::panic::catch_unwind::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<test[59e67a9bc0e119f1]::run_test_in_process::{closure#0}>, core[4a92201981c6b77a]::result::Result<(), alloc[420bb310a727dfd7]::string::String>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x5615be9ef8ab - test[59e67a9bc0e119f1]::run_test_in_process
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:747:27
[INFO] [stdout]   52:     0x5615be9ef8ab - test[59e67a9bc0e119f1]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:668:43
[INFO] [stdout]   53:     0x5615be9e8fc4 - test[59e67a9bc0e119f1]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/test/src/lib.rs:698:41
[INFO] [stdout]   54:     0x5615be9e8fc4 - std[1209cfb42f6d497f]::sys::backtrace::__rust_begin_short_backtrace::<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x5615be9f24b2 - std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked::<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   56:     0x5615be9f24b2 - <core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   57:     0x5615be9f24b2 - std[1209cfb42f6d497f]::panicking::catch_unwind::do_call::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:581:40
[INFO] [stdout]   58:     0x5615be9f24b2 - std[1209cfb42f6d497f]::panicking::catch_unwind::<(), core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x5615be9f24b2 - std[1209cfb42f6d497f]::panic::catch_unwind::<core[4a92201981c6b77a]::panic::unwind_safe::AssertUnwindSafe<std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x5615be9f24b2 - std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked::<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   61:     0x5615be9f24b2 - <std[1209cfb42f6d497f]::thread::lifecycle::spawn_unchecked<test[59e67a9bc0e119f1]::run_test::{closure#1}, ()>::{closure#1} as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x5615bee06a6f - <alloc[420bb310a727dfd7]::boxed::Box<dyn core[4a92201981c6b77a]::ops::function::FnOnce<(), Output = ()> + core[4a92201981c6b77a]::marker::Send> as core[4a92201981c6b77a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   63:     0x5615bee06a6f - <std[1209cfb42f6d497f]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/f9988fefd3add01f414f52b414308e7872622fee/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   64:     0x75ef7ca7baa4 - <unknown>
[INFO] [stdout]   65:     0x75ef7cb08a64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     executor::tests::test_abort_kills_harness_process_group
[INFO] [stdout]     executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 753 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.64s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1bdea10ea220d6172a3ae95de9f7457cc6e1876e9eb078225eac5d5f09b33def", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1bdea10ea220d6172a3ae95de9f7457cc6e1876e9eb078225eac5d5f09b33def", kill_on_drop: false }`
[INFO] [stdout] 1bdea10ea220d6172a3ae95de9f7457cc6e1876e9eb078225eac5d5f09b33def
